/*
 * @Descripttion: 导航
 * @version: 
 * @Author: jwZhang
 * @Date: 2020-04-30 11:13:06
 * @LastEditors: jwZhang
 * @LastEditTime: 2020-04-30 11:46:04
 */
import 'package:flutter/material.dart';

/*
 引用: https://blog.csdn.net/unicorn97/article/details/100896529
    使用Navigator.of(context).push()来处理，或者是调用pushNamed("\xxx"),pop()等 
 问题:
    1. 路由导航属于业务逻辑, 如果在Widget中写导航相关的代码，那么就在UI层混入了逻辑层的代码,不利于有一个清晰的架构
    2. 所有的调用者都必须要清楚导航逻辑，这使得代码变得强耦合，一旦导航逻辑修改了，所有的调用处都需要修改；
  解决: 
    使用get_it库和命名路由named-routing
*/
class NavigateService {
  // GlobalKeys可用于访问(当前是NavigatorState)StatefulWidget的状态，利用这一点，我们可以在context以外的地方来访问NavigatorState
  final GlobalKey<NavigatorState> key = GlobalKey(debugLabel: 'navigate_key');

  NavigatorState get navigator => key.currentState;

  get pushNamed => navigator.pushNamed;
  get push => navigator.push;
  get popAndPushNamed => navigator.popAndPushNamed;
}
